﻿using System;
using System.Collections.Generic;
using System.Text;

namespace NetRosApp.FinPart.Views.PutniNalogView
{
    public class HelperBrojkeuSlova
    {

        public static string Pretvori(Decimal iznos, bool novac)
        {
            String kune;
            String lipe;
            int kunaint = Convert.ToInt32(Math.Truncate(iznos));
            int lipeint = Convert.ToInt32((iznos - kunaint)*100.00m);
            kune = kunaint.ToString("0");
            lipe = lipeint.ToString("n0");
            int val = kune.Length;
            String retVal = "";
            switch (val)
            {
                case 1:
                    retVal = Jednocifreni(kune, novac);
                    break;
                case 2:
                    retVal = Dvocifreni(kune, novac);
                    break;

                case 3:
                    retVal = Trocifreni(kune, novac);
                    break;
                case 4:
                    retVal = Cetvorocifreni(kune, novac);
                    break;
                case 5:
                    retVal = Petocifreni(kune, novac);
                    break;
                case 6:
                    retVal = Sestocifreni(kune, novac);
                    break;
                case 7:
                    retVal = Sedmocifreni(kune, novac);
                    break;
                case 8:
                    retVal = Osmocifreni(kune, novac);
                    break;
                    //case 9:
                    //    retVal = Devetocifreni(kune);
                    //    break;
                    //case 10:
                    //    retVal = Desetocifreni(kune);
                    //    break;
                    //default:
                    //    return "";
            }

            val = lipe.Length;
            String dv = "";
            if (val == 2)
            {
                dv = Dvocifreni(lipe, true);
            }
            else
            {
                dv = Jednocifreni(lipe, true);
            }
            if (novac)
            {
                if (String.IsNullOrEmpty(dv) || lipeint == 0)
                {
                    retVal += " Kn";
                }
                else
                {
                    retVal += " Kn i " + dv + " Lp";
                }
            }
            //else
            //{
            //    retVal += " DANA";
            //}

            return retVal;
        }

        static String Teen(String jed, bool zenskirod)
        {
            if (jed == "10")
                return "DESET ";
            else if (jed == "11")
                return "JEDANAEST ";
            else if (jed == "12")
                return "DVANAEST ";
            else if (jed == "13")
                return "TRINAEST ";
            else if (jed == "14")
                return "ČETRNAEST ";
            else if (jed == "15")
                return "PETNAEST ";
            else if (jed == "16")
                return "ŠESNAEST ";
            else if (jed == "17")
                return "SEDAMNAEST ";
            else if (jed == "18")
                return "OSAMNAEST ";
            else if (jed == "19")
                return "DEVETNAEST ";
            else
                return "";
        }
        static String Desetice(String jed, bool zenskirod)
        {
            if (jed == "1")
                return "DESET ";
            else if (jed == "2")
                return "DVADESET ";
            else if (jed == "3")
                return "TRIDESET ";
            else if (jed == "4")
                return "ČETRDESET ";
            else if (jed == "5")
                return "PEDESET ";
            else if (jed == "6")
                return "ŠESDESET ";
            else if (jed == "7")
                return "SEDAMDESET ";
            else if (jed == "8")
                return "OSAMDESET ";
            else if (jed == "9")
                return "DEVEDESET ";
            else
                return "";
        }
        static String Stotine(String jed, bool zenskirod)
        {
            if (jed == "1")
                return "STO ";
            else if (jed == "2")
                return "DVJESTO ";
            else if (jed == "3")
                return "TRISTO ";
            else if (jed == "4")
                return "ČETIRISTO ";
            else if (jed == "5")
                return "PETSTO ";
            else if (jed == "6")
                return "ŠESTO ";
            else if (jed == "7")
                return "SEDAMSTO ";
            else if (jed == "8")
                return "OSAMSTO ";
            else if (jed == "9")
                return "DEVETSTO ";
            else
                return "";
        }
        static String Hiljade(String jed, bool zenskirod)
        {
            if (jed == "1")
                return "TISUĆU ";
            else if (jed == "2")
                return "DVIJETISUĆE ";
            else if (jed == "3")
                return "TRITISUĆE ";
            else if (jed == "4")
                return "ČETIRITISUĆE ";
            else if (jed == "5")
                return "PETTISUĆA ";
            else if (jed == "6")
                return "ŠESTTISIĆA ";
            else if (jed == "7")
                return "SEDAMTISUĆA ";
            else if (jed == "8")
                return "OSAMTISUĆA ";
            else if (jed == "9")
                return "DEVETTISUĆA ";
            else
                return "";
        }
        static String Milioni(String jed, bool zenskirod)
        {
            if (jed == "1")
                return "MILIJUN ";
            else if (jed == "2")
                return "DVA MILIJUNA ";
            else if (jed == "3")
                return "TRI MILIJUNA ";
            else if (jed == "4")
                return "ČETIRI MILIJUNA ";
            else if (jed == "5")
                return "PET MILIJUNA";
            else if (jed == "6")
                return "ŠEST MILIJUNA ";
            else if (jed == "7")
                return "SEDA MMILIJUNA ";
            else if (jed == "8")
                return "OSAM MILIJUNA ";
            else if (jed == "9")
                return "DEVET MILIJUNA ";
            else
                return "";
        }
        static String Milijarde(String jed, bool zenskirod)
        {
            if (jed == "1")
                return "MILJARDA";
            else if (jed == "2")
                return "DVIJE MILIJARDE";
            else if (jed == "3")
                return "TRI MILIJARDE";
            else if (jed == "4")
                return "ČETIRI MILIJARDE";
            else if (jed == "5")
                return "PET MILIJARDI";
            else if (jed == "6")
                return "ŠES TMILIJARDI";
            else if (jed == "7")
                return "SEDAM MILIJARDI";
            else if (jed == "8")
                return "OSAM MILIJARDI";
            else if (jed == "9")
                return "DEVET MILIJARDI";
            else
                return "";
        }

        static string Jednocifreni(String jed, bool zenskirod)
        {
            return Jedinice(jed, zenskirod);
        }
        static string Jedinice(String jed, bool zenskirod)
        {
            if (jed == "1")
            {
                if (zenskirod)
                    return "JEDNA ";
                else
                    return "JEDAN ";

            }

            else if (jed == "2")
            {
                if (zenskirod)
                    return "DVIJE ";
                else
                    return "DVA ";

            }
            else if (jed == "3")
                return "TRI ";
            else if (jed == "4")
                return "ČETIRI ";
            else if (jed == "5")
                return "PET ";
            else if (jed == "6")
                return "ŠEST ";
            else if (jed == "7")
                return "SEDAM ";
            else if (jed == "8")
                return "OSAM ";
            else if (jed == "9")
                return "DEVET ";
            else
                return "";
        }
        static String Dvocifreni(String jed, bool zenskirod)
        {
            if (jed[0] == '0')
                return Jedinice(jed.Substring(1, 1), zenskirod);

            if (jed[0] != '1')
            {
                return Desetice(jed.Substring(0, 1), zenskirod) + Jedinice(jed.Substring(1, 1), zenskirod);
            }
            else
                return Teen(jed, zenskirod);
        }

        static String Trocifreni(String jed, bool zenskirod)
        {
            if (jed[0] == '0')
                return Dvocifreni(jed.Substring(1, 2), zenskirod);
            else
                return Stotine(jed.Substring(0, 1), zenskirod) + Dvocifreni(jed.Substring(1, 2), zenskirod);
        }

        static String Cetvorocifreni(String jed, bool zenskirod)
        {
            if (jed[0] == '0')
                return Trocifreni(jed.Substring(1, 3), zenskirod);
            else
                return Hiljade(jed.Substring(0, 1), zenskirod) + Trocifreni(jed.Substring(1, 3), zenskirod);

        }
        static String Petocifreni(String jed, bool zenskirod)
        {
            if (jed[0] == '0')
                return Cetvorocifreni(jed.Substring(1, 4), zenskirod);
            else
            {
                if (jed[0] == '1')
                {
                    return Teen(jed.Substring(0, 2), true) + ("TISUĆA ") + Trocifreni(jed.Substring(2, 3), zenskirod);
                }

                else
                {
                    if ((jed[1] == '2' ||
                    jed[1] == '3' ||
                    jed[1] == '2'))
                        return Dvocifreni(jed.Substring(0, 2), true) + ("TISUĆE ") + Trocifreni(jed.Substring(2, 3), zenskirod);
                    else
                        return Dvocifreni(jed.Substring(0, 2), true) + ("TISUĆA ") + Trocifreni(jed.Substring(2, 3), zenskirod);

                }

            }


        }
        static String Sestocifreni(String jed, bool zenskirod)
        {

            if (jed[0] == '0')
                return Petocifreni(jed.Substring(1, 5), zenskirod);
            else
            {
                if ((jed[2] == '2' ||
                   jed[2] == '3' ||
                   jed[2] == '2') && (jed[1] != '1'))
                    return Trocifreni(jed.Substring(0, 3), true) + ("TISUĆE ") + Trocifreni(jed.Substring(3, 3), zenskirod);
                else
                    return Trocifreni(jed.Substring(0, 3), true) + ("TISUĆA ") + Trocifreni(jed.Substring(3, 3), zenskirod);
            }
        }
        static String Sedmocifreni(String jed, bool zenskirod)
        {
            if (jed[0] == '0')
                return Sestocifreni(jed.Substring(0, 6), zenskirod);
            else
            {
                return Milioni(jed.Substring(1, 1), zenskirod) + Sestocifreni(jed.Substring(1, 6), zenskirod);
            }
        }
        static String Osmocifreni(String jed,bool zenskirod)
        {
            //if(jed.GetAt(0)=='0')
            //    return Sedmocifreni(jed.Right(7),zenskirod);
            //else
            //{	
                    if(jed[1]=='1' && jed[0]!='1')
                    return Dvocifreni(jed.Substring(0,2),false)+"MILIJUN "+Sestocifreni(jed.Substring(2,6) ,zenskirod);
                    else
                    return Dvocifreni(jed.Substring(0,2),false)+"MILIJUNA " + Sestocifreni(jed.Substring(2,6) ,zenskirod);

            //}
        }
        //CString CHBACurrency::Devetocifreni(CString jed,BOOL zenskirod)
        //{
        //    if(jed.GetAt(0)=='0')
        //        return Osmocifreni(jed.Right(8),zenskirod);
        //    else
        //    {	 if(jed.GetAt(2)=='1'&& jed.GetAt(1)!='1')
        //        return Trocifreni(jed.Left(3),FALSE)+(m_bHrvatski? "MILIJUN ":"MILION ")+Sestocifreni(jed.Right(6));
        //        else
        //           return Trocifreni(jed.Left(3),FALSE)+(m_bHrvatski? "MULIJUNA ":"MILIONA ")+Sestocifreni(jed.Right(6));
        //    }
        //}
        //CString CHBACurrency::Desetocifreni(CString jed,BOOL zenskirod)
        //{
        //    if(jed.GetAt(0)=='0')
        //        return Devetocifreni(jed.Right(9),zenskirod);
        //    else
        //    {	
        //        return Milijarde(jed.Left(1),TRUE)+Devetocifreni(jed.Right(9),TRUE);

        //    }
        //}
    }
}
